# @Time : 2020/6/25 17:15
# @Author : Fioman 
# @Phone : 13149920693

"""
部分应用是指:基于一个函数创建一个新的可调用对象,把原函数的某些参数固定.
使用这个函数可以把接受一个或多个参数的函数改编成需要回调的API,这样参数更少.
"""
from operator import mul
from functools import partial

triple = partial(mul, 3)  # 返回的是一个函数,有一个固定参数3
res1 = triple(7)
print("res1 = {}".format(res1))

res_list = list(map(triple, range(1, 20)))
print("res_list = {}".format(res_list))

import unicodedata, functools

nfc = functools.partial(unicodedata.normalize, "NFC")
s1 = 'café'
s2 = 'cafe\u0301'
print("s1 == s2 : {}".format(s1 == s2))
s1 = nfc(s1)
s2 = nfc(s2)
print("s1 == s2 : {}".format(s1 == s2))
